package AccesoADatos;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class FechaDAO {

	public List<List<String>> getFechaActual(){

		List<List<String>> resultado = new ArrayList<List<String>>();
		
		try {

            Connection conn = ConexionOracle.getConexionOracle().getConnection();
            
            String consulta = "SELECT * FROM FECHA WHERE NRO_FECHA = (SELECT MIN(NRO_FECHA) FROM FECHA WHERE CERRADA = 0)";
            
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery(consulta);
            
            resultado = resultSetToString(rset,6);
            stmt.close();
            
            
        } catch (SQLException ex) {
            Logger.getLogger(ConexionOracle.class.getName()).log(Level.SEVERE, null, ex);
        }
		return resultado;
	}
	
	public void setCerrada(int nroFecha) {
		String consulta = "UPDATE FECHA SET CERRADA = 1 WHERE NRO_FECHA = " + nroFecha;
		try {
			Connection conn = ConexionOracle.getConexionOracle().getConnection();
			Statement stmt = conn.createStatement();
            stmt.executeQuery(consulta);
            
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public List<List<String>> resultSetToString(ResultSet r, int columnas) throws SQLException{
		
		List<List<String>> lista = new ArrayList<List<String>>();
		
		while(r.next()){
			
			List<String> temp = new ArrayList<String>();
			
			for(int i = 1 ; i < columnas ; i++){
				temp.add(r.getString(i));
			}
			lista.add(temp);
		}
		return lista;
	}
	
	public void guardarFechaYHoraDeInicioDeCalculos(int nroFecha) {
		
		SimpleDateFormat formateador = new SimpleDateFormat ("dd/MM/yyyy"); 
		String fecha=formateador.format (new Date());
		
		String consulta = "UPDATE FECHA SET FECHA_INICIO = to_date('" + fecha + "','DD/MM/RRRR') WHERE NRO_FECHA = " + nroFecha;
		try {
			Connection conn = ConexionOracle.getConexionOracle().getConnection();
			Statement stmt = conn.createStatement();
            stmt.executeQuery(consulta);
            
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		SimpleDateFormat formateador2 = new SimpleDateFormat ("hh:mm"); 
		String hora=formateador2.format (new Date()); 
		
		consulta = "UPDATE FECHA SET HORA_INICIO = '" + hora + "' WHERE NRO_FECHA = " + nroFecha;
		try {
			Connection conn = ConexionOracle.getConexionOracle().getConnection();
			Statement stmt = conn.createStatement();
            stmt.executeQuery(consulta);
            
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public List<List<String>> obtenerFecha(int nroFecha) {
		
		List<List<String>> resultado = new ArrayList<List<String>>();
		
		try {

            Connection conn = ConexionOracle.getConexionOracle().getConnection();
            
            String consulta = "SELECT * FROM FECHA WHERE NRO_FECHA = "+nroFecha;
            
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery(consulta);
            
            resultado = resultSetToString(rset,6);
            stmt.close();
            
            
        } catch (SQLException ex) {
            Logger.getLogger(ConexionOracle.class.getName()).log(Level.SEVERE, null, ex);
        }
		return resultado;
	}

}
